package teamworkYangXiaoCheng;

import java.lang.reflect.Method;

public class YangShiYan1 {
    public static void main(String[] args)throws Exception {
        //throws Exception
        // 加载指定名称（类的完整限定名）的类
        //类的完整限定名=包名+类名
        //成功加载后，将得到的C可以代表User类本身，称之为类的对象；
        //当泛型对象位置或不确定大的时候，可以使用？代替Class<?>
        Class<?> C = Class.forName("teamworkYangXiaoCheng.User");
        //使用类对象C的newInstance方法生成User类的实例【实例化】
        Object u = C.newInstance();
        //使用类对象getMethod的方法查找User类中的setName方法
        //查找成功后得到的setMethod可以代表User类总的setName方法，称之为方法对象；
        //"setName"查找的方法的名称
        // Method第二个及后面所有的参数数据类型和被查找的方法中的参数的数据类型保持一直
        Method setName = C.getMethod("setName", String.class);
        //invoke第一个参数是调动对象，也就是类的实例；
        //第二个及后面所有的参数，根据具体情况传值；
        setName.invoke(u,"Xiao");//【写】
        Method getName = C.getMethod("getName");
        Object name = getName.invoke(u);//【读】
        System.out.println(name);


    }
}//反射
